﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;

namespace iNet.Collections
{
	/// <summary>
	/// 將實作 System.Collections.IEnumerable 介面的物件包覆成 System.Collections.Generic.IEnumerable&lt;T&gt; 介面的類別。
	/// </summary>
	public class EnumerableCollection<T> : IEnumerable<T>
	{
		#region 欄位
		IEnumerable _Collection;
		#endregion
		#region 建構子
		/// <summary>
		/// 初始化新的 EnumerableCollection 執行個體。
		/// </summary>
		/// <param name="collection">實作 System.Collections.IEnumerable 介面的物件。</param>
		/// <exception cref="ArgumentNullException">collection 為 Null (Visual Basic 為 Nothing)。</exception>
		public EnumerableCollection(IEnumerable collection)
		{
			if (collection == null)
				throw new ArgumentNullException("collection");
			_Collection = collection;
		}
		#endregion
		#region GetEnumerator
		/// <summary>
		/// 取得提供項目列舉的 System.Collections.Generic.IEnumerable&lt;T&gt; 介面。
		/// </summary>
		/// <returns>System.Collections.Generic.IEnumerable&lt;T&gt; 介面。</returns>
		public IEnumerator<T> GetEnumerator()
		{
			return new Enumerator<T>(_Collection.GetEnumerator());
		}
		#endregion
		#region IEnumerable.GetEnumerator
		IEnumerator IEnumerable.GetEnumerator()
		{
			return _Collection.GetEnumerator();
		}
		#endregion
	}
}